【CSS】要素を横並び・縦並びにする。display:flexの使い方を実例で解説 您所在的位置:网站首页 jsp style display 【CSS】要素を横並び・縦並びにする。display:flexの使い方を実例で解説

【CSS】要素を横並び・縦並びにする。display:flexの使い方を実例で解説

2023-04-15 04:59| 来源: 网络整理| 查看: 265

要素を横並びにする方法はいくつか存在する。 一番おすすめはdisplay: flex;(flexbox)。

昔はfloat(とclearfixの組み合わせ)が使われていたが、flexboxが出てからは、そちらの方が主流。

横並びでもカルーセルを作成する場合は、display: table;も使われたりするらしい。

目次 横並び display: flex; display: flex;の注意点 高さは一番大きな要素に合う(画像も!) 高さを元に戻す方法 align-itemsの設定(親) align-selfの設定(子) 各要素の横幅は各要素の中身の大きさになる(指定がない場合) 親要素に収まるように横幅が自動調整される 要素は左寄せになる 水平方向の位置とスペース調整 justify-content 折り返す flex-wrap: wrap; 個別に並べ替えする order: 数値 縦並びに戻す flex-direction: column; 参考リンク一覧

横並び display: flex;

通常要素は縦に積まれていく。この親要素に対してdisplay: flex;を指定すると横並びになる。

image.png

 ↓ display: flex;

image.png

html 要素1 要素2 要素3 要素4 要素5 .css .flexbox div{ background: skyblue; margin: 10px; width: 200px; height: 100px; } .flexbox{ display:flex; }

display: flex;の注意点 高さは一番大きな要素に合う(画像も!)

flexの中の要素の高さに指定がない場合、一番高い要素の高さ自動で変更される。

実例

要素2が最も高さがある。

image.png

 ↓ display: flex;

image.png

高さが最も高い要素2に併せて伸びた。divタグだけでなく画像も縦にいっぱいに伸びてしまう。

これはflexboxの中の要素のcssを指定するalign-itemsというプロパティがデフォルトでstretch(引き伸ばす)になっているため。(normalでも同様になる)

高さを元に戻す方法

高さを元の要素の高さに戻す方法は2つある。

align-itemsの設定(親) align-selfの設定(子)

>moz align-items >moz align-self

1. align-itemsの設定(親)

flexを設定した親要素がデフォルトで`align-items: stretch;となっているのでこれを変更すればいい。

center, flex-start, flex-endの3つだけ覚えておけば大丈夫そう。

値 内容 stretch デフォルト。一番高い要素に合わせて伸びる normal stretchと同じ。 center 中央寄せ。 flex-start 上に寄せる flex-end 下に寄せる start flex-startと同じ。 end 効かない。(flex-startと同じ) baseline ベースラインが一直線になるように配置 1-1. center

align-items: normal; align-items: stretch; image.png

1-2. center

align-items: center; image.png

1-3. flex-start

align-items: flex-start;

image.png

1-4. flex-end

align-items: flex-end; image.png

1-5. start

flex-startと同じ。。 align-items: center; image.png

1-6. end

Chromeでは効かない、、startと同じになった。

align-items: end; image.png

1-7. baseline

align-items: baseline; image.png

2. align-selfの設定(子)

flexboxの中身を一律で設定するのではなく、要素一つ一つを指定する方法。

使える値は、align-itemsとほぼ同じ。center, flex-start, flex-endを覚えておけばOK。

imgタグにのみalign-self: center;を適用した場合

image.png

それぞれ異なる値にした場合

image.png

各要素の横幅は各要素の中身の大きさになる(指定がない場合)

横幅の指定がない要素は、その要素の中ある要素の大きさになる。

image.png

 ↓ display: flex;

image.png

横幅を指定すれば、指定した長さになる。

▼コード

html 要素1

要素2 ここはpタグ。

要素4 .css .flexbox div{ background: skyblue; margin: 0 10px; } .flexbox p{ background: yellow; margin: 0 10px; } .flexbox{ border:solid lightgray 1px; width: 70%; display:flex; }

親要素に収まるように横幅が自動調整される

中の要素にwidthを指定している場合でも、親要素の幅が縮まると合わせて小さくなる。折り返しはされない。

image.png

 ↓ 親要素の幅を縮める(グレーの枠線)

image.png

min-width以下にはならない

min-widthを設定している場合は、その値が守られる。 親要素の幅を超える場合ははみ出る。

image.png

要素は左寄せになる

display: flex;を適用した場合、中の要素は水平方向で左寄せになる。

image.png

グレーの親の枠線に対して左に寄っているのがわかる。

水平方向の位置とスペース調整 justify-content

justify-contentプロパティを使うと、要素を水平方向で調整できる。

値 内容 flex-start デフォルト。左寄せ start デフォルトと同じ。 center 中央寄せ flex-end 中央寄せ end 機能しない。(デフォルトと同じ) space-evenly  均等に配置 space-between 均等に配置。ただし、最初のアイテムは先頭寄せ。最後のアイテムは末尾寄せ。 space-around 均等に配置。ただし、各アイテムの両側に半分の大きさの間隔を置く

>moz justify-content

1. flex-start

justify-content: flex-start; image.png

2. center

justify-content: center; image.png

3. flex-end

justify-content: flex-end; image.png

4. space-evenly

justify-content: space-evenly; image.png

5. space-between

justify-content: space-between; image.png

6. space-around

justify-content: space-around; image.png

▼point1 デフォルトでは中の要素が縦方向にstretchしてしまうため、align-itemsやalign-selfと合わせて使うのが一般的。

image.png

.css .flexbox{ display: flex; justify-content: space-evenly; align-items: center; }

▼point2 space-*を使った状態でmarginを適用することもできるがわかりにくいため、任意でスペースを開けたい場合は、space-*を使わず、個別にmarginを設定していく方が調整しやすい。

折り返す方法 flex-wrap: wrap;

親要素にflex-wrap: wrap;を指定すると、親要素の横幅に合わせて折り返すことができる。デフォルトはno-wrapになっている。

1 2 wrap 折り返し wrap-reverse 逆順で折り返し no-wrap 折り返しなし

>moz flex-wrap

実例

image.png

 ↓ flex-wrap: wrap;

image.png

wrap-reverseの場合

flex-wrap: wrap-reverse;

image.png 要素4が上に移動している。

個別に並べ替えする order: 数値

orderプロパティを使うと指定した順番で並べ替えることができる。

自分の現在位置をorder: 0として、移動した個数を-2や2のように指定する。

image.png

 ↓ imgタグに-2を設定

image.png

.css .flexbox img{ order: -2; }

▼注意点 どれか一つの要素が動いた場合、動いた後の現在位置がorder: 0になる。

縦並びに戻す flex-direction: column;

display: flex;を適用すればデフォルトで横並びになるが、メディアクエリなどで再度縦並びに戻したい場合は、以下を追記する。

flex-direction: column;

ちなみにデフォルトの横並びはflex-direction: row;が省略されている。

実例

image.png

 ↓ flex-direction: column;

image.png

display: flex;のみの時と同じく親の横幅に合わせてstretchする。

元のサイズに戻したい場合は、親にaligh-itemsか子にalign-selfを使う。

html 要素1

要素2 ここはpタグ。

要素4 .css .flexbox div{ background: skyblue; margin: 0 10px; min-width: 200px; height: 100px; } .flexbox p{ background: yellow; margin: 0 10px; min-width: 150px; height: 100px; } .flexbox{ border:solid lightgray 4px; width: 70%; display:flex; flex-direction: column; align-items: center; }

・aligh-items: center

image.png

・aligh-items: flex-start

image.png

・aligh-items: flex-end

image.png

補足

display:flexを適用したことで上下の要素に余計なマージンが生じることはない。

他のCSSプロパティが効いている可能性が高い。

参考リンク一覧 moz flexbox moz align-items moz align-self moz flex-wrap moz flex-direction moz justify-content


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有